package cn.iocoder.yudao.module.fm.service.tunnel;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.fm.controller.admin.tunnel.vo.*;
import cn.iocoder.yudao.module.fm.dal.dataobject.tunnel.TunnelDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

/**
 * 隧道 Service 接口
 *
 * @author 档案
 */
public interface TunnelService {

    /**
     * 创建隧道
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createTunnel(@Valid TunnelCreateReqVO createReqVO);

    /**
     * 更新隧道
     *
     * @param updateReqVO 更新信息
     */
    void updateTunnel(@Valid TunnelUpdateReqVO updateReqVO);

    /**
     * 删除隧道
     *
     * @param id 编号
     */
    void deleteTunnel(Long id);

    /**
     * 获得隧道
     *
     * @param id 编号
     * @return 隧道
     */
    TunnelDO getTunnel(Long id);

    /**
     * 获得隧道列表
     *
     * @param ids 编号
     * @return 隧道列表
     */
    List<TunnelDO> getTunnelList(Collection<Long> ids);

    /**
     * 获得隧道分页
     *
     * @param pageReqVO 分页查询
     * @return 隧道分页
     */
    PageResult<TunnelDO> getTunnelPage(TunnelPageReqVO pageReqVO);

    /**
     * 获得隧道列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 隧道列表
     */
    List<TunnelDO> getTunnelList(TunnelExportReqVO exportReqVO);

    void importExcel(MultipartFile file);

    ResponseEntity<byte[]> exportExcel(TunnelRespVO tunnelRespVO);
}
